package com.example.demo.config;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DatabaseConfig {
    private static final Logger LOGGER = Logger.getLogger(DatabaseConfig.class.getName());
    // 加密工具类实例
    private static StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

    static {
        // 初始化加密器
        encryptor.setPassword("mySecretKey");// 这里的密码应该从安全的地方获取，比如配置中心或环境变量
    }

    public static void main(String[] args) {
        try {
            Properties props = loadProperties();
            String decryptedPassword = decryptPassword(props.getProperty("db.password"));
            connectToDatabase(props.getProperty("db.url"),
                    props.getProperty("db.username"), decryptedPassword);
        } catch (Exception e) {
            LOGGER.log(Level.SEVERE, "Failed to initialize database connection.", e);
        }
    }
    /**
     * 从环境变量加载属性
     */
    private static Properties loadProperties() {
        Properties properties = new Properties(); // 假设这些值是从环境变量或其他外部源获取的
        properties.setProperty("db.url", System.getenv("DB_URL"));
        properties.setProperty("db.username", System.getenv("DB_USERNAME"));
        properties.setProperty("db.password", System.getenv("DB_PASSWORD")); // 加密后的密码
        return properties;
    }

    /**
     * 解密数据库密码
     */
    private static String decryptPassword(String encryptedPassword) {
        return encryptor.decrypt(encryptedPassword); // 使用加密器解密密码
    }

    /**
     * 模拟数据库连接方法
     */
    private static void connectToDatabase(String url, String username, String password) {
        // 在这里进行实际的数据库连接操作
        System.out.println("Connecting to database: " + url);
        System.out.println("Username: " + username);
        System.out.println("Decrypted Password: " + password);
        // 这里省略了真正的数据库连接逻辑...
    }
}

